<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OpenIG: OpenIG::PluginBase::Plugin Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="openig_logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">OpenIG
   &#160;<span id="projectnumber">2.0.7</span>
   </div>
   <div id="projectbrief">cross-platform open-source OpenSceneGraph Image Generator</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>OpenIG</b></li><li class="navelem"><b>PluginBase</b></li><li class="navelem"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html">Plugin</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="class_open_i_g_1_1_plugin_base_1_1_plugin-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">OpenIG::PluginBase::Plugin Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>The <a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html" title="The Plugin class. ">Plugin</a> class.  
 <a href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_plugin_8h_source.html">Plugin.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for OpenIG::PluginBase::Plugin:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_open_i_g_1_1_plugin_base_1_1_plugin.png" usemap="#OpenIG::PluginBase::Plugin_map" alt=""/>
  <map id="OpenIG::PluginBase::Plugin_map" name="OpenIG::PluginBase::Plugin_map">
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0627329678a045dcfcafb472e836a9b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a0627329678a045dcfcafb472e836a9b6">Plugin</a> ()</td></tr>
<tr class="memdesc:a0627329678a045dcfcafb472e836a9b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a0627329678a045dcfcafb472e836a9b6">More...</a><br /></td></tr>
<tr class="separator:a0627329678a045dcfcafb472e836a9b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2bd3dc03d9a5b162aa180b58d95a6fe2"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a2bd3dc03d9a5b162aa180b58d95a6fe2">getName</a> ()=0</td></tr>
<tr class="memdesc:a2bd3dc03d9a5b162aa180b58d95a6fe2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The name of the plugin.  <a href="#a2bd3dc03d9a5b162aa180b58d95a6fe2">More...</a><br /></td></tr>
<tr class="separator:a2bd3dc03d9a5b162aa180b58d95a6fe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1db713d2af0bf642237d1930b557d2aa"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a1db713d2af0bf642237d1930b557d2aa">getDescription</a> ()=0</td></tr>
<tr class="memdesc:a1db713d2af0bf642237d1930b557d2aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">The description of the plugin.  <a href="#a1db713d2af0bf642237d1930b557d2aa">More...</a><br /></td></tr>
<tr class="separator:a1db713d2af0bf642237d1930b557d2aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36fdf754a81711cd82b21291d24b46be"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a36fdf754a81711cd82b21291d24b46be">getVersion</a> ()=0</td></tr>
<tr class="memdesc:a36fdf754a81711cd82b21291d24b46be"><td class="mdescLeft">&#160;</td><td class="mdescRight">The version of the plugin.  <a href="#a36fdf754a81711cd82b21291d24b46be">More...</a><br /></td></tr>
<tr class="separator:a36fdf754a81711cd82b21291d24b46be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aceb3cedebe51c7cbb3d6a6bd70d9dc28"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#aceb3cedebe51c7cbb3d6a6bd70d9dc28">getAuthor</a> ()=0</td></tr>
<tr class="memdesc:aceb3cedebe51c7cbb3d6a6bd70d9dc28"><td class="mdescLeft">&#160;</td><td class="mdescRight">The author of the plugin.  <a href="#aceb3cedebe51c7cbb3d6a6bd70d9dc28">More...</a><br /></td></tr>
<tr class="separator:aceb3cedebe51c7cbb3d6a6bd70d9dc28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9598525af1aa0066748b375691723a1b"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a9598525af1aa0066748b375691723a1b">getLibrary</a> () const</td></tr>
<tr class="memdesc:a9598525af1aa0066748b375691723a1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The shared library name where the plugin is defined.  <a href="#a9598525af1aa0066748b375691723a1b">More...</a><br /></td></tr>
<tr class="separator:a9598525af1aa0066748b375691723a1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31b5685fa70e38009faa51c4c2784b4c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a31b5685fa70e38009faa51c4c2784b4c">getOrderNumber</a> () const</td></tr>
<tr class="memdesc:a31b5685fa70e38009faa51c4c2784b4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The order number of the plugin.  <a href="#a31b5685fa70e38009faa51c4c2784b4c">More...</a><br /></td></tr>
<tr class="separator:a31b5685fa70e38009faa51c4c2784b4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfb0b3732a59b587227fe172d6df1158"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#adfb0b3732a59b587227fe172d6df1158">databaseRead</a> (const std::string &amp;, osg::Node *, const osgDB::Options *)</td></tr>
<tr class="memdesc:adfb0b3732a59b587227fe172d6df1158"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hook for database read.  <a href="#adfb0b3732a59b587227fe172d6df1158">More...</a><br /></td></tr>
<tr class="separator:adfb0b3732a59b587227fe172d6df1158"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5e55246767439694bbdb96cd39b6314"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#aa5e55246767439694bbdb96cd39b6314">databaseReadInVisitorBeforeTraverse</a> (osg::Node &amp;, const osgDB::Options *)</td></tr>
<tr class="memdesc:aa5e55246767439694bbdb96cd39b6314"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hook for begining of the loaded model traveral.  <a href="#aa5e55246767439694bbdb96cd39b6314">More...</a><br /></td></tr>
<tr class="separator:aa5e55246767439694bbdb96cd39b6314"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb2dfd445eab843291dad6c6a265b04e"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#aeb2dfd445eab843291dad6c6a265b04e">databaseReadInVisitorAfterTraverse</a> (osg::Node &amp;)</td></tr>
<tr class="memdesc:aeb2dfd445eab843291dad6c6a265b04e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hook for begining of the loaded model traveral.  <a href="#aeb2dfd445eab843291dad6c6a265b04e">More...</a><br /></td></tr>
<tr class="separator:aeb2dfd445eab843291dad6c6a265b04e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a484e1323f6b71a570452dc61c1e5a262"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a484e1323f6b71a570452dc61c1e5a262">config</a> (const std::string &amp;)</td></tr>
<tr class="memdesc:a484e1323f6b71a570452dc61c1e5a262"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to configure the plugin from a XML file.  <a href="#a484e1323f6b71a570452dc61c1e5a262">More...</a><br /></td></tr>
<tr class="separator:a484e1323f6b71a570452dc61c1e5a262"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10a3f5498c3e367c352681e31991465a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a10a3f5498c3e367c352681e31991465a">init</a> (<a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;)</td></tr>
<tr class="memdesc:a10a3f5498c3e367c352681e31991465a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to init the plugin with a given igplugincore::PluginContext.  <a href="#a10a3f5498c3e367c352681e31991465a">More...</a><br /></td></tr>
<tr class="separator:a10a3f5498c3e367c352681e31991465a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b88201002768bc6c7a2ef2599f2febb"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a5b88201002768bc6c7a2ef2599f2febb">update</a> (<a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;)</td></tr>
<tr class="memdesc:a5b88201002768bc6c7a2ef2599f2febb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update hook.  <a href="#a5b88201002768bc6c7a2ef2599f2febb">More...</a><br /></td></tr>
<tr class="separator:a5b88201002768bc6c7a2ef2599f2febb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d9150a9752e41d4737d3d3a6dfcd6d9"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a1d9150a9752e41d4737d3d3a6dfcd6d9">preFrame</a> (<a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;, double)</td></tr>
<tr class="memdesc:a1d9150a9752e41d4737d3d3a6dfcd6d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Preframe hook.  <a href="#a1d9150a9752e41d4737d3d3a6dfcd6d9">More...</a><br /></td></tr>
<tr class="separator:a1d9150a9752e41d4737d3d3a6dfcd6d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae503971b2f97dacaf394097685b736aa"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#ae503971b2f97dacaf394097685b736aa">postFrame</a> (<a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;, double)</td></tr>
<tr class="memdesc:ae503971b2f97dacaf394097685b736aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Postframe hook.  <a href="#ae503971b2f97dacaf394097685b736aa">More...</a><br /></td></tr>
<tr class="separator:ae503971b2f97dacaf394097685b736aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f4eade6773717746ce45acc325d2957"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a2f4eade6773717746ce45acc325d2957">clean</a> (<a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;)</td></tr>
<tr class="memdesc:a2f4eade6773717746ce45acc325d2957"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method called on exit to give the user chance to perform cleanup.  <a href="#a2f4eade6773717746ce45acc325d2957">More...</a><br /></td></tr>
<tr class="separator:a2f4eade6773717746ce45acc325d2957"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44afebbe8b519da79d332ef1ea327f42"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a44afebbe8b519da79d332ef1ea327f42">entityAdded</a> (<a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;, unsigned int, osg::Node &amp;, const std::string &amp;)</td></tr>
<tr class="memdesc:a44afebbe8b519da79d332ef1ea327f42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hook called when OpenIG::Base::Entity is added to the scene.  <a href="#a44afebbe8b519da79d332ef1ea327f42">More...</a><br /></td></tr>
<tr class="separator:a44afebbe8b519da79d332ef1ea327f42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd58514484217d89711255be71f0a715"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#acd58514484217d89711255be71f0a715">beginningOfFrame</a> (<a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;)</td></tr>
<tr class="memdesc:acd58514484217d89711255be71f0a715"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hook called on the very beginning of the frame before any processing.  <a href="#acd58514484217d89711255be71f0a715">More...</a><br /></td></tr>
<tr class="separator:acd58514484217d89711255be71f0a715"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26459a2724667e98998ae58179b7bb2a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a26459a2724667e98998ae58179b7bb2a">endOfFrame</a> (<a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;)</td></tr>
<tr class="memdesc:a26459a2724667e98998ae58179b7bb2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hook called on the end of the frame after all the frame processing.  <a href="#a26459a2724667e98998ae58179b7bb2a">More...</a><br /></td></tr>
<tr class="separator:a26459a2724667e98998ae58179b7bb2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a699b0630bd69281a7244d343c368939b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a699b0630bd69281a7244d343c368939b">setLibrary</a> (const std::string &amp;library)</td></tr>
<tr class="memdesc:a699b0630bd69281a7244d343c368939b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The order number of the plugin. See igplugincore::Plugin::getOrderNumber.  <a href="#a699b0630bd69281a7244d343c368939b">More...</a><br /></td></tr>
<tr class="separator:a699b0630bd69281a7244d343c368939b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6baec675722dfe0291bbe09842def381"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#a6baec675722dfe0291bbe09842def381">setOrderNumber</a> (int orderNumber)</td></tr>
<tr class="memdesc:a6baec675722dfe0291bbe09842def381"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the plugin order number.  <a href="#a6baec675722dfe0291bbe09842def381">More...</a><br /></td></tr>
<tr class="separator:a6baec675722dfe0291bbe09842def381"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a3d06aa5900b77a123def03acd8283dc2"><td class="memItemLeft" align="right" valign="top"><a id="a3d06aa5900b77a123def03acd8283dc2"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>_library</b></td></tr>
<tr class="separator:a3d06aa5900b77a123def03acd8283dc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1620b4e2ae652e9686cccf993545875"><td class="memItemLeft" align="right" valign="top"><a id="aa1620b4e2ae652e9686cccf993545875"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#aa1620b4e2ae652e9686cccf993545875">_orderNumber</a></td></tr>
<tr class="memdesc:aa1620b4e2ae652e9686cccf993545875"><td class="mdescLeft">&#160;</td><td class="mdescRight">The shared library file name where this plugin is implemented. <br /></td></tr>
<tr class="separator:aa1620b4e2ae652e9686cccf993545875"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a7b14227ed5c4092fe9409c8e3e40eb3b"><td class="memItemLeft" align="right" valign="top"><a id="a7b14227ed5c4092fe9409c8e3e40eb3b"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>PluginHost</b></td></tr>
<tr class="separator:a7b14227ed5c4092fe9409c8e3e40eb3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The <a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html" title="The Plugin class. ">Plugin</a> class. </p>
<p>The OpenIG Image Generator is designed with plugin-in based architecture This class is the abstract interface definition of a plugin</p>
<p>As the <a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html" title="The Plugin class. ">Plugin</a> is defined, it is providing methods that are hooks giving the writers of inheritants chance to intercept in events happening in the OpenIG. These events are the visual database or model loading, hooks in the DatabaseReadCallback, in the <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#acef9cfd451cf47aca15ddeb7d8781c08">OpenIG::Base::ImageGenerator::frame</a> method for update and pre/post frame processing, on <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#a32c1e1a62540af3ba83afe4ab0340ad6">OpenIG::Base::ImageGenerator::Entity</a> addition.</p>
<p>In OpenIG, a DatabaseReadCallback is implemented in a way that uses the default osg read implementatoion and then it calls all the plugins loaded method igplugincore::Plugin::databaseRead to postprocess the loaded model before it's addition to the scene. Example can be the igplugins::LightingPlugin that traverse the loaded model, looks for runways and adds shader based light sources as addition to the light points After the process of the loading of the model, there is NodeVisitor applied to the model, which calls the igplugincore::Plugin::databaseReadInVisitorBeforeTraverse and igplugincore::Plugin::databaseReadInVisitorAfterTraverse hook methods. It is a common place to use this one NodeVisitor and perform actions/settings on nodes from the loaded model. Here is a snippet in pseudo code for the DatabaseReadCallback - for details refer to the source. </p><div class="fragment"><div class="line"><span class="keyword">class </span>DatabaseReadCallback : <span class="keyword">public</span> osgDB::Registry::ReadFileCallback</div><div class="line">{</div><div class="line">....</div><div class="line">    <span class="keyword">virtual</span> osgDB::ReaderWriter::ReadResult readNode(<span class="keyword">const</span> std::string&amp; filename, <span class="keyword">const</span> osgDB::Options* options)</div><div class="line">    {</div><div class="line">        osgDB::ReaderWriter::ReadResult result = osgDB::Registry::instance()-&gt;readNodeImplementation(filename,options);</div><div class="line">        <span class="keywordflow">if</span> (result.getNode())</div><div class="line">        {</div><div class="line">            <span class="comment">// Call the databaseRead hook on all plugins</span></div><div class="line">            <span class="comment">// through PluginOperation</span></div><div class="line">            <a class="code" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#adfb0b3732a59b587227fe172d6df1158">Plugin::databaseRead</a>(filename,options);</div><div class="line"></div><div class="line">            <span class="comment">// Traverse the model and calls</span></div><div class="line">            <span class="comment">// the other mention hooks, see bellow</span></div><div class="line">            DatabaseReadNodeVisitor nv;</div><div class="line">            result.getNode()-&gt;accept(nv);</div><div class="line">        }</div><div class="line">        <span class="keywordflow">return</span> result;</div><div class="line">    }</div><div class="line">....</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">class </span>DatabaseReadNodeVisitor : <span class="keyword">public</span> osg::NodeVisitor</div><div class="line">{</div><div class="line">...</div><div class="line">    <span class="keyword">virtual</span> <span class="keywordtype">void</span> apply(osg::Node&amp; node)</div><div class="line">    {</div><div class="line">        <span class="comment">// Call all the plugins hook before</span></div><div class="line">        <span class="comment">// traversal</span></div><div class="line">        <a class="code" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#aa5e55246767439694bbdb96cd39b6314">Plugin::databaseReadInVisitorBeforeTraverse</a>(...);</div><div class="line"></div><div class="line">        traverse(node);</div><div class="line"></div><div class="line">        <span class="comment">// Call all the plugins hook</span></div><div class="line">        <span class="comment">// after traversal</span></div><div class="line">        <a class="code" href="class_open_i_g_1_1_plugin_base_1_1_plugin.html#aeb2dfd445eab843291dad6c6a265b04e">Plugin::databaseReadInVisitorAfterTraverse</a>(...);</div><div class="line">    }</div><div class="line">...</div><div class="line">};</div></div><!-- fragment --><p>The other hooks are tied in <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#a0e22e0cd3edde54c6ec35e7cbdf2af4e">OpenIG::Base::ImageGenerator::init</a> to give chance to init and configure the plugins. These are:</p><ul>
<li>igplugincore::Plugin::init</li>
<li>igplugincore::Plugin::config</li>
</ul>
<p>Then the frame hooks, that are happening each frame:</p><ul>
<li>igplugincore::Plugin::update</li>
<li>igplugincore::Plugin::preFrame</li>
<li>igplugincore::Plugin::postFrame See <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#acef9cfd451cf47aca15ddeb7d8781c08">OpenIG::Base::ImageGenerator::frame</a> where these are explained</li>
</ul>
<p>And the last hook added is for the addEntity event, happens in <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#af74c6e8683480858a7cb18c70f9a01b8">OpenIG::Base::ImageGenerator::addEntity</a></p>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0627329678a045dcfcafb472e836a9b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0627329678a045dcfcafb472e836a9b6">&#9670;&nbsp;</a></span>Plugin()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">OpenIG::PluginBase::Plugin::Plugin </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor. </p>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acd58514484217d89711255be71f0a715"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd58514484217d89711255be71f0a715">&#9670;&nbsp;</a></span>beginningOfFrame()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::beginningOfFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Hook called on the very beginning of the frame before any processing. </p>
<p>Hook called on the very beginning of the frame before any processing. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">the</td><td>igplugincore::PluginContext </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Sat May 14 2016 </dd></dl>

</div>
</div>
<a id="a2f4eade6773717746ce45acc325d2957"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f4eade6773717746ce45acc325d2957">&#9670;&nbsp;</a></span>clean()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::clean </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method called on exit to give the user chance to perform cleanup. </p>
<p>Hook called on exit to give the user chance to perform cleanup See <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#acef9cfd451cf47aca15ddeb7d8781c08">OpenIG::Base::ImageGenerator::frame</a> for more info </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>igplugincore::PluginContext </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a484e1323f6b71a570452dc61c1e5a262"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a484e1323f6b71a570452dc61c1e5a262">&#9670;&nbsp;</a></span>config()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::config </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method to configure the plugin from a XML file. </p>
<p>Method to configure the plugin from a XML file. It is called once at <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#a0e22e0cd3edde54c6ec35e7cbdf2af4e">OpenIG::Base::ImageGenerator::init</a>. The file name is composed from the file name of the library containing the plugin implementation with .xml extension </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>file name of the XML configuration </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="adfb0b3732a59b587227fe172d6df1158"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfb0b3732a59b587227fe172d6df1158">&#9670;&nbsp;</a></span>databaseRead()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::databaseRead </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">osg::Node *&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const osgDB::Options *&#160;</td>
          <td class="paramname">&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Hook for database read. </p>
<p>This is a hook that is attached to a database read callback in osg. It is called when load of a model is happened and gives the user to intercept this event and perform custom operation from within the plugin </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>first parameter is the file name of the model loaded </td></tr>
    <tr><td class="paramname">The</td><td>second parameter is the osg::Node representing the loaded model </td></tr>
    <tr><td class="paramname">The</td><td>last parameter is the osgDB::Options provided for loading of the model </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="aeb2dfd445eab843291dad6c6a265b04e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb2dfd445eab843291dad6c6a265b04e">&#9670;&nbsp;</a></span>databaseReadInVisitorAfterTraverse()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::databaseReadInVisitorAfterTraverse </td>
          <td>(</td>
          <td class="paramtype">osg::Node &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Hook for begining of the loaded model traveral. </p>
<p>Hook for end of the loaded model traveral. The mention database read callback is traversing the loaded model and this method is called after traversal. It gives the user ability to perform operations on all the nodes being traversed. Example can be the LightingPlugin which replaces lightpoints in the loaded model with real lights computed in a shader </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>node traversed is the first parameter </td></tr>
    <tr><td class="paramname">The</td><td>options used to load the model </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="aa5e55246767439694bbdb96cd39b6314"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5e55246767439694bbdb96cd39b6314">&#9670;&nbsp;</a></span>databaseReadInVisitorBeforeTraverse()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::databaseReadInVisitorBeforeTraverse </td>
          <td>(</td>
          <td class="paramtype">osg::Node &amp;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const osgDB::Options *&#160;</td>
          <td class="paramname">&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Hook for begining of the loaded model traveral. </p>
<p>Hook for begining of the loaded model traveral. The mention database read callback is traversing the loaded model and this method is called before traversal. It gives the user ability to perform operations on all the nodes being traversed. Example can be the LightingPlugin which replaces lightpoints in the loaded model with real lights computed in a shader </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>node traversed is the first parameter </td></tr>
    <tr><td class="paramname">The</td><td>options used to load the model </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a26459a2724667e98998ae58179b7bb2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26459a2724667e98998ae58179b7bb2a">&#9670;&nbsp;</a></span>endOfFrame()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::endOfFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Hook called on the end of the frame after all the frame processing. </p>
<p>Hook called on the end of the frame after all the frame processing. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">the</td><td>igplugincore::PluginContext </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Sat May 14 2016 </dd></dl>

</div>
</div>
<a id="a44afebbe8b519da79d332ef1ea327f42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44afebbe8b519da79d332ef1ea327f42">&#9670;&nbsp;</a></span>entityAdded()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::entityAdded </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>int</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">osg::Node &amp;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname">&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Hook called when OpenIG::Base::Entity is added to the scene. </p>
<p>Hook called when OpenIG::Base::Entity is added to the scene. This gives the user chance to intercept this event and perform actions on the OpenIG::Base::Entity when it is added to the scene with <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#af74c6e8683480858a7cb18c70f9a01b8">OpenIG::Base::ImageGenerator::addEntity</a> </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">the</td><td>igplugincore::PluginContext </td></tr>
    <tr><td class="paramname">the</td><td><a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#a32c1e1a62540af3ba83afe4ab0340ad6">OpenIG::Base::ImageGenerator::Entity</a> ID assigned </td></tr>
    <tr><td class="paramname">the</td><td>osg::Node representing this <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#a32c1e1a62540af3ba83afe4ab0340ad6">OpenIG::Base::ImageGenerator::Entity</a> </td></tr>
    <tr><td class="paramname">the</td><td>filename of the model </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="aceb3cedebe51c7cbb3d6a6bd70d9dc28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aceb3cedebe51c7cbb3d6a6bd70d9dc28">&#9670;&nbsp;</a></span>getAuthor()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::string OpenIG::PluginBase::Plugin::getAuthor </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The author of the plugin. </p>
<dl class="section return"><dt>Returns</dt><dd>The author of the plugin </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a1db713d2af0bf642237d1930b557d2aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1db713d2af0bf642237d1930b557d2aa">&#9670;&nbsp;</a></span>getDescription()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::string OpenIG::PluginBase::Plugin::getDescription </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The description of the plugin. </p>
<p>Ihnerits are requred to provide description of what the implemented plugin does </p><dl class="section return"><dt>Returns</dt><dd>The description of the plugin </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a9598525af1aa0066748b375691723a1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9598525af1aa0066748b375691723a1b">&#9670;&nbsp;</a></span>getLibrary()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::string OpenIG::PluginBase::Plugin::getLibrary </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The shared library name where the plugin is defined. </p>
<p>The shared library name where the plugin is defined. This is set by the igplugincore::PluginHost </p><dl class="section return"><dt>Returns</dt><dd></dd></dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a2bd3dc03d9a5b162aa180b58d95a6fe2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bd3dc03d9a5b162aa180b58d95a6fe2">&#9670;&nbsp;</a></span>getName()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::string OpenIG::PluginBase::Plugin::getName </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The name of the plugin. </p>
<p>The name of the plugin. It is used by the igplugincore::PluginHost to manage them. The active plugins are mentioned in the opeing::OpenIG configuration file openig.xml on Windows found in igdata folder, on Linux and MacOS in /usr/local/lib/igdata. </p><dl class="section return"><dt>Returns</dt><dd>The name of the plugin </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a31b5685fa70e38009faa51c4c2784b4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31b5685fa70e38009faa51c4c2784b4c">&#9670;&nbsp;</a></span>getOrderNumber()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int OpenIG::PluginBase::Plugin::getOrderNumber </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The order number of the plugin. </p>
<p>The order number of the plugin. It is read by the igplugincore::PluginHost from the configuration file as openig.xml is. The plugins are then executed based on their order number </p><dl class="section return"><dt>Returns</dt><dd>The order number of the plugin </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a36fdf754a81711cd82b21291d24b46be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36fdf754a81711cd82b21291d24b46be">&#9670;&nbsp;</a></span>getVersion()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::string OpenIG::PluginBase::Plugin::getVersion </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The version of the plugin. </p>
<dl class="section return"><dt>Returns</dt><dd>The version of the plugin </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a10a3f5498c3e367c352681e31991465a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10a3f5498c3e367c352681e31991465a">&#9670;&nbsp;</a></span>init()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method to init the plugin with a given igplugincore::PluginContext. </p>
<p>Method to init the plugin with a given igplugincore::PluginContext. The igplugincore::PluginHost is calling this once to give the user to perform initialization of the plugin </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>igplugincore::PluginContext </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="ae503971b2f97dacaf394097685b736aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae503971b2f97dacaf394097685b736aa">&#9670;&nbsp;</a></span>postFrame()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::postFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname">&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Postframe hook. </p>
<p>postFrame hook. This is called in a frame with a given igplugincore::PluginContext.\ See <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#acef9cfd451cf47aca15ddeb7d8781c08">OpenIG::Base::ImageGenerator::frame</a> for more info </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>igplugincore::PluginContext </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a1d9150a9752e41d4737d3d3a6dfcd6d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d9150a9752e41d4737d3d3a6dfcd6d9">&#9670;&nbsp;</a></span>preFrame()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::preFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname">&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Preframe hook. </p>
<p>preFrame hook. This is called in a frame with a given igplugincore::PluginContext.\ See <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#acef9cfd451cf47aca15ddeb7d8781c08">OpenIG::Base::ImageGenerator::frame</a> for more info </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>igplugincore::PluginContext </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a699b0630bd69281a7244d343c368939b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a699b0630bd69281a7244d343c368939b">&#9670;&nbsp;</a></span>setLibrary()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void OpenIG::PluginBase::Plugin::setLibrary </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>library</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The order number of the plugin. See igplugincore::Plugin::getOrderNumber. </p>
<p>Sets the shared library file name. igplugincore::PluginHost is setting this internaly Sets the shared library file name </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">library</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a6baec675722dfe0291bbe09842def381"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6baec675722dfe0291bbe09842def381">&#9670;&nbsp;</a></span>setOrderNumber()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void OpenIG::PluginBase::Plugin::setOrderNumber </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>orderNumber</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the plugin order number. </p>
<p>Sets the order number of the plugin. The order number of the plugin is set by igplugincore::PluginHost when loading the plugins and in calls the plugin and their plugin hooks in sorted by this number fashion </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">The</td><td>order number of the plugin </td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<a id="a5b88201002768bc6c7a2ef2599f2febb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b88201002768bc6c7a2ef2599f2febb">&#9670;&nbsp;</a></span>update()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OpenIG::PluginBase::Plugin::update </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_open_i_g_1_1_plugin_base_1_1_plugin_context.html">PluginContext</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Update hook. </p>
<p>Update hook. This is called in a frame with a given igplugincore::PluginContext.\ See <a class="el" href="class_open_i_g_1_1_base_1_1_image_generator.html#acef9cfd451cf47aca15ddeb7d8781c08">OpenIG::Base::ImageGenerator::frame</a> for more info </p><dl class="section author"><dt>Author</dt><dd>Trajce Nikolov Nick <a href="#" onclick="location.href='mai'+'lto:'+'ope'+'ni'+'g@c'+'om'+'pro'+'.n'+'et'; return false;">openi<span style="display: none;">.nosp@m.</span>g@co<span style="display: none;">.nosp@m.</span>mpro.<span style="display: none;">.nosp@m.</span>net</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c)Compro Computer Services, Inc. </dd></dl>
<dl class="section date"><dt>Date</dt><dd>Fri Jan 16 2015 </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Core-PluginBase/<a class="el" href="_plugin_8h_source.html">Plugin.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed May 16 2018 15:41:11 for OpenIG by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>
